package lumis.portal.channel.acl.serialization;

import java.util.EnumSet;

import lumis.portal.PortalException;
import lumis.portal.channel.ChannelConfig;
import lumis.portal.serialization.BaseSerializationContext;
import lumis.portal.serialization.SerializationMessageConfigNode;
import lumis.portal.serialization.SerializationMessageConfigNode.RecursionStopPoints;
import lumis.util.security.acl.AccessControlList;
import lumis.util.security.acl.serialization.IAclSerializationManager;

/**
 * Manager Interface for Channel's Acl serialization
 *
 * @version $Revision: 6239 $ $Date: 2007-03-26 15:50:32 -0300 (Mon, 26 Mar 2007) $
 * @since 4.0.7
 */
public interface IChannelAclSerializationManager extends IAclSerializationManager
{
	/**
	 * Get a {@link SerializationMessageConfigNode} object containing fully recursive information about a channel ACL.
	 * @param baseSerializationContext
	 * @param channelConfig
	 * @param accessControlList
	 * @return
	 * @throws PortalException
	 */
	public SerializationMessageConfigNode getSerializationMessageConfigNode(BaseSerializationContext baseSerializationContext, ChannelConfig channelConfig, AccessControlList accessControlList) throws PortalException;

	/**
	 * Get a {@link SerializationMessageConfigNode} object containing partially recursive information about a channel ACL.
	 * @param baseSerializationContext
	 * @param channelConfig
	 * @param accessControlList
	 * @param recursionStopPoints
	 * @return
	 * @throws PortalException
	 */
	public SerializationMessageConfigNode getSerializationMessageConfigNode(BaseSerializationContext baseSerializationContext, ChannelConfig channelConfig, AccessControlList accessControlList, EnumSet<RecursionStopPoints> recursionStopPoints) throws PortalException;
}
